/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sccpa;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.swing.JOptionPane;

/**
 *
 * @author admin
 */
@Entity
@Table(name = "alunos", catalog = "db_projeto_araca", schema = "")
@NamedQueries({
    @NamedQuery(name = "Alunos.findAll", query = "SELECT a FROM Alunos a"),
    @NamedQuery(name = "Alunos.findByCodAluno", query = "SELECT a FROM Alunos a WHERE a.codAluno = :codAluno"),
    @NamedQuery(name = "Alunos.findByCodResponsavel", query = "SELECT a FROM Alunos a WHERE a.codResponsavel = :codResponsavel"),
    @NamedQuery(name = "Alunos.findByCodPai", query = "SELECT a FROM Alunos a WHERE a.codPai = :codPai"),
    @NamedQuery(name = "Alunos.findByCodMae", query = "SELECT a FROM Alunos a WHERE a.codMae = :codMae"),
    @NamedQuery(name = "Alunos.findByNisAluno", query = "SELECT a FROM Alunos a WHERE a.nisAluno = :nisAluno"),
    @NamedQuery(name = "Alunos.findByAluno", query = "SELECT a FROM Alunos a WHERE a.aluno = :aluno"),
    @NamedQuery(name = "Alunos.findBySexo", query = "SELECT a FROM Alunos a WHERE a.sexo = :sexo"),
    @NamedQuery(name = "Alunos.findByDatNascimento", query = "SELECT a FROM Alunos a WHERE a.datNascimento = :datNascimento"),
    @NamedQuery(name = "Alunos.findByNaturalidade", query = "SELECT a FROM Alunos a WHERE a.naturalidade = :naturalidade"),
    @NamedQuery(name = "Alunos.findByRegistroCivil", query = "SELECT a FROM Alunos a WHERE a.registroCivil = :registroCivil"),
    @NamedQuery(name = "Alunos.findByProblemaSaude", query = "SELECT a FROM Alunos a WHERE a.problemaSaude = :problemaSaude"),
    @NamedQuery(name = "Alunos.findByCpf", query = "SELECT a FROM Alunos a WHERE a.cpf = :cpf"),
    @NamedQuery(name = "Alunos.findByRg", query = "SELECT a FROM Alunos a WHERE a.rg = :rg"),
    @NamedQuery(name = "Alunos.findByDataExpedicaoRg", query = "SELECT a FROM Alunos a WHERE a.dataExpedicaoRg = :dataExpedicaoRg"),
    @NamedQuery(name = "Alunos.findByUfRg", query = "SELECT a FROM Alunos a WHERE a.ufRg = :ufRg"),
    @NamedQuery(name = "Alunos.findByCpts", query = "SELECT a FROM Alunos a WHERE a.cpts = :cpts"),
    @NamedQuery(name = "Alunos.findByDataExpedicaoCtps", query = "SELECT a FROM Alunos a WHERE a.dataExpedicaoCtps = :dataExpedicaoCtps"),
    @NamedQuery(name = "Alunos.findBySerieCtps", query = "SELECT a FROM Alunos a WHERE a.serieCtps = :serieCtps"),
    @NamedQuery(name = "Alunos.findByMenorAprendiz", query = "SELECT a FROM Alunos a WHERE a.menorAprendiz = :menorAprendiz"),
    @NamedQuery(name = "Alunos.findByEmpregoAprendiz", query = "SELECT a FROM Alunos a WHERE a.empregoAprendiz = :empregoAprendiz"),
    @NamedQuery(name = "Alunos.findByLocalTrabalhoAprendiz", query = "SELECT a FROM Alunos a WHERE a.localTrabalhoAprendiz = :localTrabalhoAprendiz"),
    @NamedQuery(name = "Alunos.findByJustificativaParticiparProjeto", query = "SELECT a FROM Alunos a WHERE a.justificativaParticiparProjeto = :justificativaParticiparProjeto"),
    @NamedQuery(name = "Alunos.findByDataIngressoProjeto", query = "SELECT a FROM Alunos a WHERE a.dataIngressoProjeto = :dataIngressoProjeto"),
    @NamedQuery(name = "Alunos.findByDataSaidaProjeto", query = "SELECT a FROM Alunos a WHERE a.dataSaidaProjeto = :dataSaidaProjeto"),
    @NamedQuery(name = "Alunos.findByOBolsaescola", query = "SELECT a FROM Alunos a WHERE a.oBolsaescola = :oBolsaescola"),
    @NamedQuery(name = "Alunos.findByValorBolsaEscola", query = "SELECT a FROM Alunos a WHERE a.valorBolsaEscola = :valorBolsaEscola"),
    @NamedQuery(name = "Alunos.findByCoraluno", query = "SELECT a FROM Alunos a WHERE a.coraluno = :coraluno")})
public class Alunos implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "COD_ALUNO")
    private Integer codAluno;
    @JoinColumn(name="COD_RESPONSAVEL", referencedColumnName="COD_PESSOA")
    @ManyToOne
    private Pessoas codResponsavel;
    @JoinColumn(name="COD_PAI", referencedColumnName="COD_PESSOA")
    @ManyToOne
    private Pessoas codPai;
    @JoinColumn(name="COD_MAE", referencedColumnName="COD_PESSOA")
    @ManyToOne
    private Pessoas codMae;
    @Column(name = "NIS_ALUNO")
    private Integer nisAluno;
    @Basic(optional = false)
    @Column(name = "ALUNO")
    private String aluno;
    @Basic(optional = false)
    @Column(name = "SEXO")
    private String sexo;
    @Basic(optional = false)
    @Column(name = "DAT_NASCIMENTO")
    @Temporal(TemporalType.DATE)
    private Date datNascimento;
    @Column(name = "NATURALIDADE")
    private String naturalidade;
    @Column(name = "REGISTRO_CIVIL")
    private String registroCivil;
    @Basic(optional = false)
    @Column(name = "PROBLEMA_SAUDE")
    private String problemaSaude;
    @Lob
    @Column(name = "PROBLEMA_SAUDE_DESCRICAO")
    private String problemaSaudeDescricao;
    @Column(name = "CPF")
    private String cpf;
    @Column(name = "RG")
    private String rg;
    @Column(name = "DATA_EXPEDICAO_RG")
    @Temporal(TemporalType.DATE)
    private Date dataExpedicaoRg;
    @Column(name = "UF_RG")
    private String ufRg;
    @Column(name = "CPTS")
    private String cpts;
    @Column(name = "DATA_EXPEDICAO_CTPS")
    @Temporal(TemporalType.DATE)
    private Date dataExpedicaoCtps;
    @Column(name = "SERIE_CTPS")
    private String serieCtps;
    @Basic(optional = false)
    @Column(name = "MENOR_APRENDIZ")
    private String menorAprendiz;
    @Column(name = "EMPREGO_APRENDIZ")
    private String empregoAprendiz;
    @Column(name = "LOCAL_TRABALHO_APRENDIZ")
    private String localTrabalhoAprendiz;
    @Column(name = "JUSTIFICATIVA_PARTICIPAR_PROJETO")
    private String justificativaParticiparProjeto;
    @Lob
    @Column(name = "ANOTACOES_GERAIS")
    private String anotacoesGerais;
    @Column(name = "DATA_INGRESSO_PROJETO")
    @Temporal(TemporalType.DATE)
    private Date dataIngressoProjeto;
    @Column(name = "DATA_SAIDA_PROJETO")
    @Temporal(TemporalType.DATE)
    private Date dataSaidaProjeto;
    @Column(name = "O_BOLSAESCOLA")
    private String oBolsaescola;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "VALOR_BOLSA_ESCOLA")
    private Float valorBolsaEscola;
    @Lob
    @Column(name = "MOTIVO_SAIDA")
    private String motivoSaida;
    @Lob
    @Column(name = "OBSERVACOES")
    private String observacoes;
    @Basic(optional = false)
    @Column(name = "CORALUNO")
    private String coraluno;
    @OneToMany(mappedBy = "codAluno")
    private List<AlunoEscolaridades> alunoEscolaridadeList;
    @OneToMany(mappedBy = "codAluno")
    private List<ComposicaoFamiliar> composicaommmList;
    @OneToMany(mappedBy = "codAluno")
    private List<Projetos> projetosalunoList;
        
    public ResultSet getImprimir(Connection conexao) throws SQLException
    {
        ResultSet resultSet = null;

        try
        {
            String comando;
            comando = "SELECT * FROM Alunos  ";

            int quantParam = 0;


//            if (getCodAluno() > 0 ){
//               comando = comando + " WHERE codAluno = ? ";
//            }
               comando += " ORDER BY Aluno ";

            //O parâmetro resultSetType define se o ResultSet irá ser navegável e posicionado ou não:
            //ResultSet.TYPE_FORWARD_ONLY: com este parâmetro o ResultSet não poderá ser navegável, ou seja, poderemos somente avançar no objeto ResultSet para poder buscar valores.
            //ResultSet.TYPE_SCROLL_INSENSITIVE: com este parâmetro o ResultSet poderá ser navegável em qualquer direção, para frente e para trás, e será insensível a mudanças feitas por outras transações ou por outros Statements da mesma transação.
            //ResultSet.TYPE_SCROLL_SENSITIVE: com este parâmetro o ResultSet poderá ser navegável para qualquer direção, e será sensível a mudanças feitas por outras transações ou por outros Statements da mesma transação.
            java.sql.PreparedStatement stmtQuery = conexao.prepareStatement(comando);
//
//            if (getCodAluno() > 0 ){
//               quantParam = quantParam +1;
//               stmtQuery.setInt(quantParam, getCodAluno());
//            }


        resultSet = stmtQuery.executeQuery();


        }
        catch (SQLException sqlex)
        {
             JOptionPane.showMessageDialog(null,"Não foi Possivél executar o comando sql" + sqlex);

        }

     return resultSet;
     }

    public Alunos() {
    }

    public Alunos(Integer codAluno) {
        this.codAluno = codAluno;
    }

    public Alunos(Integer codAluno, Pessoas codResponsavel, Pessoas codPai, Pessoas codMae, String aluno, String sexo, Date datNascimento, String problemaSaude, String menorAprendiz, String coraluno) {
        this.codAluno = codAluno;
        this.codResponsavel = codResponsavel;
        this.codPai = codPai;
        this.codMae = codMae;
        this.aluno = aluno;
        this.sexo = sexo;
        this.datNascimento = datNascimento;
        this.problemaSaude = problemaSaude;
        this.menorAprendiz = menorAprendiz;
        this.coraluno = coraluno;
    }

    public Integer getCodAluno() {
        return codAluno;
    }

    public void setCodAluno(Integer codAluno) {
        Integer oldCodAluno = this.codAluno;
        this.codAluno = codAluno;
        changeSupport.firePropertyChange("codAluno", oldCodAluno, codAluno);
    }

    public Pessoas getCodResponsavel() {
        return codResponsavel;
    }

    public void setCodResponsavel(Pessoas codResponsavel) {
        Pessoas oldCodResponsavel = this.codResponsavel;
        this.codResponsavel = codResponsavel;
        changeSupport.firePropertyChange("codResponsavel", oldCodResponsavel, codResponsavel);
    }

    public Pessoas getCodPai() {
        return codPai;
    }

    public void setCodPai(Pessoas codPai) {
        Pessoas oldCodPai = this.codPai;
        this.codPai = codPai;
        changeSupport.firePropertyChange("codPai", oldCodPai, codPai);
    }

    public Pessoas getCodMae() {
        return codMae;
    }

    public void setCodMae(Pessoas codMae) {
        Pessoas oldCodMae = this.codMae;
        this.codMae = codMae;
        changeSupport.firePropertyChange("codMae", oldCodMae, codMae);
    }

    public Integer getNisAluno() {
        return nisAluno;
    }

    public void setNisAluno(Integer nisAluno) {
        Integer oldNisAluno = this.nisAluno;
        this.nisAluno = nisAluno;
        changeSupport.firePropertyChange("nisAluno", oldNisAluno, nisAluno);
    }

    public String getAluno() {
        return aluno;
    }

    public void setAluno(String aluno) {
        String oldAluno = this.aluno;
        this.aluno = aluno;
        changeSupport.firePropertyChange("aluno", oldAluno, aluno);
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        String oldSexo = this.sexo;
        this.sexo = sexo;
        changeSupport.firePropertyChange("sexo", oldSexo, sexo);
    }

    public Date getDatNascimento() {
        return datNascimento;
    }

    public void setDatNascimento(Date datNascimento) {
        Date oldDatNascimento = this.datNascimento;
        this.datNascimento = datNascimento;
        changeSupport.firePropertyChange("datNascimento", oldDatNascimento, datNascimento);
    }

    public String getNaturalidade() {
        return naturalidade;
    }

    public void setNaturalidade(String naturalidade) {
        String oldNaturalidade = this.naturalidade;
        this.naturalidade = naturalidade;
        changeSupport.firePropertyChange("naturalidade", oldNaturalidade, naturalidade);
    }

    public String getRegistroCivil() {
        return registroCivil;
    }

    public void setRegistroCivil(String registroCivil) {
        String oldRegistroCivil = this.registroCivil;
        this.registroCivil = registroCivil;
        changeSupport.firePropertyChange("registroCivil", oldRegistroCivil, registroCivil);
    }

    public String getProblemaSaude() {
        return problemaSaude;
    }

    public void setProblemaSaude(String problemaSaude) {
        String oldProblemaSaude = this.problemaSaude;
        this.problemaSaude = problemaSaude;
        changeSupport.firePropertyChange("problemaSaude", oldProblemaSaude, problemaSaude);
    }

    public String getProblemaSaudeDescricao() {
        return problemaSaudeDescricao;
    }

    public void setProblemaSaudeDescricao(String problemaSaudeDescricao) {
        String oldProblemaSaudeDescricao = this.problemaSaudeDescricao;
        this.problemaSaudeDescricao = problemaSaudeDescricao;
        changeSupport.firePropertyChange("problemaSaudeDescricao", oldProblemaSaudeDescricao, problemaSaudeDescricao);
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        String oldCpf = this.cpf;
        this.cpf = cpf;
        changeSupport.firePropertyChange("cpf", oldCpf, cpf);
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        String oldRg = this.rg;
        this.rg = rg;
        changeSupport.firePropertyChange("rg", oldRg, rg);
    }

    public Date getDataExpedicaoRg() {
        return dataExpedicaoRg;
    }

    public void setDataExpedicaoRg(Date dataExpedicaoRg) {
        Date oldDataExpedicaoRg = this.dataExpedicaoRg;
        this.dataExpedicaoRg = dataExpedicaoRg;
        changeSupport.firePropertyChange("dataExpedicaoRg", oldDataExpedicaoRg, dataExpedicaoRg);
    }

    public String getUfRg() {
        return ufRg;
    }

    public void setUfRg(String ufRg) {
        String oldUfRg = this.ufRg;
        this.ufRg = ufRg;
        changeSupport.firePropertyChange("ufRg", oldUfRg, ufRg);
    }

    public String getCpts() {
        return cpts;
    }

    public void setCpts(String cpts) {
        String oldCpts = this.cpts;
        this.cpts = cpts;
        changeSupport.firePropertyChange("cpts", oldCpts, cpts);
    }

    public Date getDataExpedicaoCtps() {
        return dataExpedicaoCtps;
    }

    public void setDataExpedicaoCtps(Date dataExpedicaoCtps) {
        Date oldDataExpedicaoCtps = this.dataExpedicaoCtps;
        this.dataExpedicaoCtps = dataExpedicaoCtps;
        changeSupport.firePropertyChange("dataExpedicaoCtps", oldDataExpedicaoCtps, dataExpedicaoCtps);
    }

    public String getSerieCtps() {
        return serieCtps;
    }

    public void setSerieCtps(String serieCtps) {
        String oldSerieCtps = this.serieCtps;
        this.serieCtps = serieCtps;
        changeSupport.firePropertyChange("serieCtps", oldSerieCtps, serieCtps);
    }

    public String getMenorAprendiz() {
        return menorAprendiz;
    }

    public void setMenorAprendiz(String menorAprendiz) {
        String oldMenorAprendiz = this.menorAprendiz;
        this.menorAprendiz = menorAprendiz;
        changeSupport.firePropertyChange("menorAprendiz", oldMenorAprendiz, menorAprendiz);
    }

    public String getEmpregoAprendiz() {
        return empregoAprendiz;
    }

    public void setEmpregoAprendiz(String empregoAprendiz) {
        String oldEmpregoAprendiz = this.empregoAprendiz;
        this.empregoAprendiz = empregoAprendiz;
        changeSupport.firePropertyChange("empregoAprendiz", oldEmpregoAprendiz, empregoAprendiz);
    }

    public String getLocalTrabalhoAprendiz() {
        return localTrabalhoAprendiz;
    }

    public void setLocalTrabalhoAprendiz(String localTrabalhoAprendiz) {
        String oldLocalTrabalhoAprendiz = this.localTrabalhoAprendiz;
        this.localTrabalhoAprendiz = localTrabalhoAprendiz;
        changeSupport.firePropertyChange("localTrabalhoAprendiz", oldLocalTrabalhoAprendiz, localTrabalhoAprendiz);
    }

    public String getJustificativaParticiparProjeto() {
        return justificativaParticiparProjeto;
    }

    public void setJustificativaParticiparProjeto(String justificativaParticiparProjeto) {
        String oldJustificativaParticiparProjeto = this.justificativaParticiparProjeto;
        this.justificativaParticiparProjeto = justificativaParticiparProjeto;
        changeSupport.firePropertyChange("justificativaParticiparProjeto", oldJustificativaParticiparProjeto, justificativaParticiparProjeto);
    }

    public String getAnotacoesGerais() {
        return anotacoesGerais;
    }

    public void setAnotacoesGerais(String anotacoesGerais) {
        String oldAnotacoesGerais = this.anotacoesGerais;
        this.anotacoesGerais = anotacoesGerais;
        changeSupport.firePropertyChange("anotacoesGerais", oldAnotacoesGerais, anotacoesGerais);
    }

    public Date getDataIngressoProjeto() {
        return dataIngressoProjeto;
    }

    public void setDataIngressoProjeto(Date dataIngressoProjeto) {
        Date oldDataIngressoProjeto = this.dataIngressoProjeto;
        this.dataIngressoProjeto = dataIngressoProjeto;
        changeSupport.firePropertyChange("dataIngressoProjeto", oldDataIngressoProjeto, dataIngressoProjeto);
    }

    public Date getDataSaidaProjeto() {
        return dataSaidaProjeto;
    }

    public void setDataSaidaProjeto(Date dataSaidaProjeto) {
        Date oldDataSaidaProjeto = this.dataSaidaProjeto;
        this.dataSaidaProjeto = dataSaidaProjeto;
        changeSupport.firePropertyChange("dataSaidaProjeto", oldDataSaidaProjeto, dataSaidaProjeto);
    }

    public String getOBolsaescola() {
        return oBolsaescola;
    }

    public void setOBolsaescola(String oBolsaescola) {
        String oldOBolsaescola = this.oBolsaescola;
        this.oBolsaescola = oBolsaescola;
        changeSupport.firePropertyChange("OBolsaescola", oldOBolsaescola, oBolsaescola);
    }

    public Float getValorBolsaEscola() {
        return valorBolsaEscola;
    }

    public void setValorBolsaEscola(Float valorBolsaEscola) {
        Float oldValorBolsaEscola = this.valorBolsaEscola;
        this.valorBolsaEscola = valorBolsaEscola;
        changeSupport.firePropertyChange("valorBolsaEscola", oldValorBolsaEscola, valorBolsaEscola);
    }

    public String getMotivoSaida() {
        return motivoSaida;
    }

    public void setMotivoSaida(String motivoSaida) {
        String oldMotivoSaida = this.motivoSaida;
        this.motivoSaida = motivoSaida;
        changeSupport.firePropertyChange("motivoSaida", oldMotivoSaida, motivoSaida);
    }

    public String getObservacoes() {
        return observacoes;
    }

    public void setObservacoes(String observacoes) {
        String oldObservacoes = this.observacoes;
        this.observacoes = observacoes;
        changeSupport.firePropertyChange("observacoes", oldObservacoes, observacoes);
    }

    public String getCoraluno() {
        return coraluno;
    }

    public void setCoraluno(String coraluno) {
        String oldCoraluno = this.coraluno;
        this.coraluno = coraluno;
        changeSupport.firePropertyChange("coraluno", oldCoraluno, coraluno);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codAluno != null ? codAluno.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Alunos)) {
            return false;
        }
        Alunos other = (Alunos) object;
        if ((this.codAluno == null && other.codAluno != null) || (this.codAluno != null && !this.codAluno.equals(other.codAluno))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sccpa.Alunos[ codAluno=" + codAluno + " ]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
    
}
